enum CacheType {
  // 枚举可能用到的方法类型
  Local,
  Session
}
class Cache {
  storage: Storage
  constructor(type: CacheType) {
    this.storage = type === CacheType.Local ? localStorage : sessionStorage
  }
  setCache(key: string, value: any) {
    // 创建token
    if (value) {
      this.storage.setItem(key, JSON.stringify(value))
    }
  }
  // 获取token
  getCache(key: string) {
    const value = this.storage.getItem(key)
    if (value) {
      return JSON.parse(value)
    }
  }
  // 删除token
  delCache(key: string) {
    this.storage.removeItem(key)
  }
  // 清除token
  clear() {
    this.storage.clear()
  }
}
// 实例化属性，确定使用哪种方式时，直接将其对应方式实例化时传进去
const localcache = new Cache(CacheType.Local)
const sessioncache = new Cache(CacheType.Session)
export { localcache, sessioncache }
